#!/usr/bin/env python3
# -*- coding: utf-8 -*-
'''
Created on 2022-04-02 10:41:17
@author: DengLibin 榆霖
@description: 标准化 
一、Min-max 标准化
min-max标准化方法是对原始数据进行线性变换。设minA和maxA分别为属性A的最小值和最大值，将A的一个原始值x通过min-max标准化映射成在区间[0,1]中的值x'，其公式为：
新数据=（原数据-最小值）/（最大值-最小值）
缺陷:如果有异常数据（出现一个非常大或非常小的数，会对就结果产生较大影响）
二、z-score 标准化
这种方法基于原始数据的均值（mean）和标准差（standard deviation）进行数据的标准化。将A的原始值x使用z-score标准化到x'。
z-score标准化方法适用于属性A的最大值和最小值未知的情况，或有超出取值范围的离群数据的情况。
新数据=（原数据-均值）/标准差
（即使有少量异常数据，对结果影响不大）
'''

import pandas as pd
from sklearn.preprocessing import StandardScaler


def standard_demo():
    """标准化
    """
    data = pd.read_csv('dating.csv')
    # 只要前三列
    data = data.iloc[:, :3]
    transfer = StandardScaler()
    data_new = transfer.fit_transform(data)
    print("data_new:", data_new)

if __name__ == '__main__':
   standard_demo()
